package com.tongtong.middleware.blockchain.client.bsn;

import feign.Body;
import feign.Headers;
import feign.Param;
import feign.RequestLine;

public interface BSNClient {
	// 开放联盟链框架查询
	@RequestLine("POST /ddcoai/sys/v1/opb/frame/framework/searches")
	@Headers(value = { "Content-Type: application/json", "Accept-Charset: utf-8", "apitoken: {apitoken}" })
    String frameworkSearches(@Param("apitoken") String apiToken);

	// 我的算力余额查询
	@RequestLine("POST /ddcoai/sys/v1/user/account/info/search")
	@Headers(value = { "Content-Type: application/json", "Accept-Charset: utf-8", "apitoken: {apitoken}" })
	String powerBalance(@Param("apitoken") String apiToken);

	// 能量值充值
	@RequestLine("POST /ddcoai/sys/v1/chainaccount/gas/recharge")
	@Headers(value = { "Content-Type: application/json", "Accept-Charset: utf-8", "apitoken: {apitoken}" })
	@Body("{req}")
	String recharge(@Param("apitoken") String apiToken, @Param("req") String req);

	// 导入链账户
	@RequestLine("POST /ddcoai/sys/v1/chainaccount/import")
	@Headers(value = { "Content-Type: application/json", "Accept-Charset: utf-8", "apitoken: {apitoken}" })
	@Body("{req}")
	String importAccount(@Param("apitoken") String apiToken, @Param("req") String req);

	// NFT列表查询
	@RequestLine("POST /ddcoai/sys/v1/nft/data/searches")
	@Headers(value = { "Content-Type: application/json", "Accept-Charset: utf-8", "apitoken: {apitoken}" })
	@Body("{req}")
	String nftData(@Param("apitoken") String apiToken, @Param("req") String req);

	// 查看NFT详情
	@RequestLine("POST /ddcoai/sys/v1/nft/data/searches/details/tokenId")
	@Headers(value = { "Content-Type: application/json", "Accept-Charset: utf-8", "apitoken: {apitoken}" })
	@Body("{req}")
	String nftDetails(@Param("apitoken") String apiToken, @Param("req") String req);

	// 根据流水号查询对应NFT交易详情
	@RequestLine("POST /ddcoai/sys/v1/nft/transfer/searches")
	@Headers(value = { "Content-Type: application/json", "Accept-Charset: utf-8", "apitoken: {apitoken}" })
	@Body("{req}")
	String nftTransferInfo(@Param("apitoken") String apiToken, @Param("req") String req);

	// NFT生成
	@RequestLine("POST /ddcoai/sys/v1/nft/url/save")
	@Headers(value = { "Content-Type: application/json", "Accept-Charset: utf-8", "apitoken: {apitoken}" })
	@Body("{req}")
	String nftMint(@Param("apitoken") String apiToken, @Param("req") String req);

	// NFT发送
	@RequestLine("POST /ddcoai/sys/v1/nft/send")
	@Headers(value = { "Content-Type: application/json", "Accept-Charset: utf-8", "apitoken: {apitoken}" })
	@Body("{req}")
	String nftSend(@Param("apitoken") String apiToken, @Param("req") String req);

	// NFT销毁
	@RequestLine("POST /ddcoai/sys/v1/nft/burn")
	@Headers(value = { "Content-Type: application/json", "Accept-Charset: utf-8", "apitoken: {apitoken}" })
	@Body("{req}")
	String nftBurn(@Param("apitoken") String apiToken, @Param("req") String req);

}
